package com.oms.filter;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@WebFilter("/AdminFilter")
public class AdminFilter implements Filter {

	public AdminFilter() {

	}

	public void destroy() {

	}

	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		// 获得在下面代码中要用的request,response,session对象
		HttpServletRequest servletRequest = (HttpServletRequest) request;
		HttpServletResponse servletResponse = (HttpServletResponse) response;
		HttpSession session = servletRequest.getSession();

		// 获得用户请求的URI
		String path = servletRequest.getRequestURI();
		System.out.println(path);

		// 从session里取用户信息
		String name = (String) session.getAttribute("u_admin");

		/*
		 * 创建类Constants.java，里面写的是无需过滤的页面 for (int i = 0; i <
		 * Constants.NoFilter_Pages.length; i++) {
		 * 
		 * if (path.indexOf(Constants.NoFilter_Pages[i]) > -1) {
		 * chain.doFilter(servletRequest, servletResponse); return; } }
		 */
		
		String requestpath = request.getServletContext().getContextPath();
		System.out.println(requestpath);
		
		// 登陆页面无需过滤
//		if (path.indexOf("/admin/index.jsp") > -1) {
//			chain.doFilter(servletRequest, servletResponse);
//			return;
//		}
//		登录页面和静态资源不用过滤
		String[] strs = {"index","images","image","css"};
		for (int i = 0; i < strs.length; i++) {
			if(path.indexOf(strs[i]) > -1){
				chain.doFilter(servletRequest, servletResponse);
				return;
			}
		}
		
		
		// 判断如果没有取到用户信息,就跳转到登陆页面
		if (name == null || "".equals(name)) {
			// 跳转到登陆页面
			servletResponse.sendRedirect(request.getServletContext().getContextPath()+"/admin/index.jsp");
		} else {
			// 已经登陆,继续此次请求
			chain.doFilter(request, response);
		}
	}

	public void init(FilterConfig fConfig) throws ServletException {

	}

}
